(function () { function isDev() { return /(?:\d+\.?){4}|location/.test(location.hostname); } var responseErrMsg = { 10202: "Insufficient download traffic.", 10205: "Invalid download code.", 10206: "The download code usage has been exhausted.", 10207: "File does not exist.", } function getApiUrl(targetUrl, params) { var host = "https://hpgmobile.com"; var url = new URL(targetUrl, host); if (params) { if (typeof params === "string") { url.search = "?" + params; } else { Object.keys(params).forEach(function (key) { url.searchParams.append(key, params[key]); }); } } return url.href; } function request(args, cb) { let params; if (!args.method || args.method.toLowerCase() === "get") { params = args.body; } args.url = getApiUrl(args.url, params); return xhr(args, cb); } var iptCode; var fileMsg; var btnDown; function initPage() { iptCode = document.getElementById("ipt-code"); fileMsg = document.getElementById("file-msg"); iptCode.addEventListener("input", onInputCode); iptCode.addEventListener("change", function () { fetchFileInfo(); }); iptCode.addEventListener("blur", onInputCode); btnDown = document .getElementById("modal-file") .querySelector(".btn-download"); btnDown.addEventListener("click", downloadFile); } function setCodeError(msg) { if (msg) { iptCode.classList.add("error"); fileMsg.textContent = msg; } else { iptCode.classList.remove("error"); fileMsg.textContent = ""; } } var supportExts = ["pdf", "ppt", "doc", "xls"]; var currentCode; function showFileInfo(code, data) { currentCode = code; var modal = document.getElementById("modal-file"); var modalBody = document.getElementById("modal-file-content"); var ext = data.file_name.substring(data.file_name.lastIndexOf(".") + 1); if (ext && ext.length > 3) { ext = ext.slice(0, 3); } var eIcon = modalBody.querySelector(".icon img"); if (!supportExts.includes(ext)) { eIcon.style.visibility = "hidden"; } else { eIcon.src = "./assets/images/" + ext + ".svg"; eIcon.style.visibility = "visible"; } var eName = modalBody.querySelector(".name"); eName.textContent = data.file_name; var eDate = modalBody.querySelector(".date"); eDate.textContent = formatDate(parseInt(data.up_time)); updateDownTimes(data.times); MicroModal.show("modal-file", { awaitCloseAnimation: true, awaitOpenAnimation: true, interceptClose: false, onClose: function () { currentCode = null; document.removeEventListener("visibilitychange", updateFileInfo); }, }); document.addEventListener("visibilitychange", updateFileInfo); } function updateDownTimes(times) { times = parseInt(times) || 0 btnDown.textContent = "Download(Available " + times + " times)"; if (!times) { btnDown.setAttribute('disabled', true) } else { btnDown.removeAttribute('disabled') } } window.updateDownTimes = updateDownTimes function onInputCode() { var code = iptCode.value; if (!code || code.length < 8) { if (iptCode.classList.contains("error")) { setCodeError(); } return; } fetchFileInfo(); } function fetchFileInfo(force) { var code = iptCode.value.toUpperCase(); if (code === currentCode && !force) return; if (code.length < 8) { if (code) setCodeError(responseErrMsg[10205]); return; } request( { body: { code: code }, url: "/file/code_to_file", json: true, }, function (err, resp, body) { if (!body) body = {}; if (err) { console.error(err.message); setCodeError("Network Error"); } else if (resp.statusCode !== 200 || body.code !== 0) { // 更新数据 if (force) { if (body.code === 10206) { // 没有次数了 updateDownTimes(0); return; } else { // 否则关闭弹框 MicroModal.close("modal-file"); } } setCodeError(responseErrMsg[body.code] || body.error || body.message || body.msg); } else { showFileInfo(code, body.data); } } ); } function updateFileInfo(e) { if (document.visibilityState === "visible") { fetchFileInfo(true); } } function downloadFile() { if (!currentCode) return; request( { body: { code: currentCode }, url: "/file/download_code_to_url", json: true, }, function (err, resp, body) { if (!body) body = {}; if (err) { console.error(err.message); alert("Network Error"); } else if (resp.statusCode !== 200 || body.code !== 0) { alert(responseErrMsg[body.code] || body.error || body.message || body.msg); } else { var url = (body.data || {}).download_url if (url) { window.open(url); } else { alert('Can not find download url') } } } ); } function formatDate(t) { var date = new Date(t); var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1; var strDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate(); /* var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + " " + date.getHours() + seperator2 + date.getMinutes() + seperator2 + date.getSeconds(); */ return month + "/" + strDate + "/" + date.getFullYear(); } function initYear() { var year = document.querySelector("#year"); year && (year.innerText = new Date().getFullYear()); } function calcVH() { var vh = window.innerHeight * 0.01; document.documentElement.style.setProperty("--vh", `${vh}px`); } function ready() { calcVH(); initPage(); initYear(); } function readyFn() { if ( document.readyState === "complete" || (document.readyState !== "loading" && !document.documentElement.doScroll) ) { // Handle it asynchronously to allow scripts the opportunity to delay ready window.setTimeout(ready); } } window.addEventListener("resize", calcVH); document.addEventListener("DOMContentLoaded", readyFn); readyFn(); })();